home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 March / Amiga-CD 1996 #3.iso / pd-software / mui_3.1 / developer / oberon / txt / muihooks.mod < prev    next >
Text File  |  1996-01-19  |  3KB  |  95 lines

  1. MODULE MuiHooks;
  2.  
  3. (* $StackChk- *)
  4. IMPORT
  5.   m  := Mui,
  6.   e  := Exec,
  7.   y  := SYSTEM,
  8.   fr := MuiFileRequester,
  9.   mb := MuiBasics;
  10.  
  11.  
  12.   VAR  getFileHook *: mb.Hook;
  13.  
  14.  
  15.  
  16. (****** MuiHooks/GetFile ****************************************************
  17. *
  18. *   NAME
  19. *       GetFile -- Holt Dateinamen über das Dateiauswahlfenster
  20. *
  21. *   SYNOPSIS
  22. *       GetFile*( hook   : mb.Hook;
  23. *                 string : m.Object;
  24. *                 args   : mb.Args ):LONGINT;
  25. *
  26. *   FUNCTION
  27. *       Läßt den Benutzer sich einen Dateinamen inkl. Pfad auswählen und
  28. *       schreibt diesen in ein StringObjekt. Aus diesem String Objekt
  29. *       wird vorher noch ein evtl. vorhandener Dateiname (inkl. Pfad)
  30. *       als Vorgabe für das Dateiauswahlfenster genommen.
  31. *
  32. *   INPUTS
  33. *       hook   = Zeiger auf den eigenen Hook
  34. *       string = StringObjekt von-/indem der Dateiname geholt bzw.
  35. *                geschrieben werden soll.
  36. *       args   = Zeiger auf die Parameterstruktur, die Struktur sie so aus:
  37. *
  38. *                   TYPE a = STRUCT( dummy : mb.ArgsDesc );
  39. *                              hail   : e.STRPTR;
  40. *                            END;
  41. *
  42. *                hail = Zeiger auf den Titeltext im Dateiwauswahlfenster
  43. *
  44. *   RESULTS
  45. *       Der Dateinname (inkl. Pfad) wird in das String Objekt geschrieben
  46. *       (falls nicht in dem Dateiauswahlfenster der Abbruch Knopf gedrückt
  47. *        wurde).
  48. *
  49. *   EXAMPLE
  50. *       Mui.DoMethod( string, Mui.mCallHook, hook,
  51. *                             SYSTEM.ADR( "Datei laden ..." ) );
  52. *
  53. *   NOTES
  54. *       Diesen Hook kann man vorzugsweise an einen Popup Button Objekt,
  55. *       der neben einem String Objekt plaziert ist, anhängen so das
  56. *       eine Dateiauswahl erleichert wird.
  57. *
  58. *       Nachdem der Dateinamen an das String Objekt übergeben worden ist
  59. *       wird noch ein "Mui.aStringAcknowledge" an das String Objekt
  60. *       gesandt, so daß das Programm darauf reagieren kann.
  61. *
  62. *
  63. *   SEE ALSO
  64. *       String.mui/MUIA_String_Acknowledge
  65. *
  66. *****************************************************************************
  67. *
  68. *)
  69.   PROCEDURE GetFile*( hook   : mb.Hook;
  70.                       string : m.Object;
  71.                       args   : mb.Args ):LONGINT;
  72.  
  73.     TYPE a = STRUCT( dummy : mb.ArgsDesc );
  74.                hail   : e.STRPTR;
  75.              END;
  76.     VAR name : ARRAY 256 OF CHAR;
  77.         str  : e.STRPTR;
  78.         window : m.Object;
  79.  
  80.     BEGIN
  81.       mb.Get( string, m.aStringContents, str );
  82.       COPY( str^, name );
  83.       mb.Get( string, m.aWindowObject, window );
  84.       IF fr.OpenForLoad( args(a).hail^, name, window ) THEN
  85.         mb.Set( string, m.aStringContents, y.ADR( name ) );
  86.         mb.Set( string, m.aStringAcknowledge, e.true );
  87.       END;
  88.       RETURN 0;
  89.     END GetFile;
  90.  
  91. BEGIN
  92.   getFileHook := mb.MakeHook( GetFile );
  93. END MuiHooks.
  94.  
  95.